using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._BusinessAnalystTools._TargetMarketing
{
    /// <summary>
    /// <para>Generate Survey Report For Targets</para>
    /// <para>Displays the top characteristics, in each of the selected survey categories, of your Core and Developmental target groups, as well as your overall customer profile.</para>
    /// <para>显示每个选定的调查类别中核心和发展目标群体的主要特征，以及您的整体客户概况。</para>
    /// </summary>    
    [DisplayName("Generate Survey Report For Targets")]
    public class GenerateSurveyReportForTargets : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public GenerateSurveyReportForTargets()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_target_profile">
        /// <para>Target Profile</para>
        /// <para>A segmentation profile representing the segments to be analyzed. The target profile usually represents your customer segmentation profile.</para>
        /// <para>表示要分析的区段的分段配置文件。目标配置文件通常代表您的客户细分配置文件。</para>
        /// </param>
        /// <param name="_target_group">
        /// <para>Target Group</para>
        /// <para>A collection of segments grouped into targets. Targets represent segments that are selected based on similar characteristics—for example, segments that have high index and percent composition.</para>
        /// <para>分组到目标中的区段的集合。目标表示根据相似特征选择的区段，例如，具有高指数和百分比构成的区段。</para>
        /// </param>
        /// <param name="_core_target">
        /// <para>Core Target</para>
        /// <para>A group of segments that make up a large percentage of your customer base and have an above average index, indicating likelihood to be a customer.</para>
        /// <para>一组细分市场，这些细分市场在您的客户群中占很大比例，并且具有高于平均水平的指数，表明成为客户的可能性。</para>
        /// </param>
        /// <param name="_developmental_target">
        /// <para>Developmental Target</para>
        /// <para>A group of segments that make up a significant percentage of your customers and of the market area but do not have an above average index.</para>
        /// <para>一组细分市场，这些细分市场在您的客户和市场区域中占很大比例，但指数没有高于平均水平。</para>
        /// </param>
        /// <param name="_report_folder">
        /// <para>Output Report Folder</para>
        /// <para>The output location where the report will be saved.</para>
        /// <para>将保存报表的输出位置。</para>
        /// </param>
        public GenerateSurveyReportForTargets(object _target_profile, object _target_group, object _core_target, object _developmental_target, object _report_folder)
        {
            this._target_profile = _target_profile;
            this._target_group = _target_group;
            this._core_target = _core_target;
            this._developmental_target = _developmental_target;
            this._report_folder = _report_folder;
        }
        public override string ToolboxName => "Business Analyst Tools";

        public override string ToolName => "Generate Survey Report For Targets";

        public override string CallName => "ba.GenerateSurveyReportForTargets";

        public override List<string> AcceptEnvironments => ["baDataSource", "workspace"];

        public override object[] ParameterInfo => [_target_profile, _target_group, _core_target, _developmental_target, _report_folder, _report_type.GetGPValue(), _survey_categories, _report_title, _report_format, _output_report];

        /// <summary>
        /// <para>Target Profile</para>
        /// <para>A segmentation profile representing the segments to be analyzed. The target profile usually represents your customer segmentation profile.</para>
        /// <para>表示要分析的区段的分段配置文件。目标配置文件通常代表您的客户细分配置文件。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Target Profile")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _target_profile { get; set; }


        /// <summary>
        /// <para>Target Group</para>
        /// <para>A collection of segments grouped into targets. Targets represent segments that are selected based on similar characteristics—for example, segments that have high index and percent composition.</para>
        /// <para>分组到目标中的区段的集合。目标表示根据相似特征选择的区段，例如，具有高指数和百分比构成的区段。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Target Group")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _target_group { get; set; }


        /// <summary>
        /// <para>Core Target</para>
        /// <para>A group of segments that make up a large percentage of your customer base and have an above average index, indicating likelihood to be a customer.</para>
        /// <para>一组细分市场，这些细分市场在您的客户群中占很大比例，并且具有高于平均水平的指数，表明成为客户的可能性。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Core Target")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _core_target { get; set; }


        /// <summary>
        /// <para>Developmental Target</para>
        /// <para>A group of segments that make up a significant percentage of your customers and of the market area but do not have an above average index.</para>
        /// <para>一组细分市场，这些细分市场在您的客户和市场区域中占很大比例，但指数没有高于平均水平。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Developmental Target")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _developmental_target { get; set; }


        /// <summary>
        /// <para>Output Report Folder</para>
        /// <para>The output location where the report will be saved.</para>
        /// <para>将保存报表的输出位置。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Report Folder")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _report_folder { get; set; }


        /// <summary>
        /// <para>Report Type</para>
        /// <para><xdoc>
        ///   <para>Specifies the survey categories to be added to the report.</para>
        ///   <bulletList>
        ///     <bullet_item>Understanding Your Target—Media-related characteristics—for example, reading, watching, and listening related.</bullet_item><para/>
        ///     <bullet_item>Developing Market Strategies—Leisure-related characteristics—for example, leisure, sports, and travel.</bullet_item><para/>
        ///     <bullet_item>Custom— User-defined characteristics. This is the default.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定要添加到报表的调查类别。</para>
        ///   <bulletList>
        ///     <bullet_item>了解您的目标 - 与媒体相关的特征 - 例如，与阅读、观看和听力相关的特征。</bullet_item><para/>
        ///     <bullet_item>制定市场策略——与休闲相关的特征——例如休闲、运动和旅行。</bullet_item><para/>
        ///     <bullet_item>自定义 — 用户定义的特征。这是默认设置。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Report Type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _report_type_value _report_type { get; set; } = _report_type_value._CUSTOM;

        public enum _report_type_value
        {
            /// <summary>
            /// <para>Understanding Your Target</para>
            /// <para>Understanding Your Target—Media-related characteristics—for example, reading, watching, and listening related.</para>
            /// <para>了解您的目标 - 与媒体相关的特征 - 例如，与阅读、观看和听力相关的特征。</para>
            /// </summary>
            [Description("Understanding Your Target")]
            [GPEnumValue("UNDERSTANDING_YOUR_TARGET")]
            _UNDERSTANDING_YOUR_TARGET,

            /// <summary>
            /// <para>Developing Market Strategies</para>
            /// <para>Developing Market Strategies—Leisure-related characteristics—for example, leisure, sports, and travel.</para>
            /// <para>制定市场策略——与休闲相关的特征——例如休闲、运动和旅行。</para>
            /// </summary>
            [Description("Developing Market Strategies")]
            [GPEnumValue("DEVELOPING_MARKET_STRATEGIES")]
            _DEVELOPING_MARKET_STRATEGIES,

            /// <summary>
            /// <para>Custom</para>
            /// <para>Custom— User-defined characteristics. This is the default.</para>
            /// <para>自定义 — 用户定义的特征。这是默认设置。</para>
            /// </summary>
            [Description("Custom")]
            [GPEnumValue("CUSTOM")]
            _CUSTOM,

        }

        /// <summary>
        /// <para>Survey Categories</para>
        /// <para>A category that contains the characteristics from the consumer survey.</para>
        /// <para>包含消费者调查特征的类别。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Survey Categories")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _survey_categories { get; set; } = null;


        /// <summary>
        /// <para>Report Title</para>
        /// <para>The title of the report.</para>
        /// <para>报表的标题。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Report Title")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _report_title { get; set; } = null;


        /// <summary>
        /// <para>Report Output Formats</para>
        /// <para>The report output format. The default value is PDF. Additional available formats are XLSX, HTML, CSV, and PAGX.</para>
        /// <para>报表输出格式。默认值为 PDF。其他可用格式包括 XLSX、HTML、CSV 和 PAGX。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Report Output Formats")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _report_format { get; set; } = null;


        /// <summary>
        /// <para>Output Report</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Report")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public List<object> _output_report { get; set; }


        public GenerateSurveyReportForTargets SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}